//const arr = [10, 20, 30, 40]

// // pop
// const popRes = arr.pop()
// console.log(popRes, arr)

// // shift
// const shiftRes = arr.shift()
// console.log(shiftRes, arr)

// // push
// const pushRes = arr.push(50) // 返回 length
// console.log(pushRes, arr)

// // unshift
// const unshiftRes = arr.unshift(5) // 返回 length
// console.log(unshiftRes, arr)

// // 纯函数：1. 不改变源数组（没有副作用）；2. 返回一个数组
// const arr = [10, 20, 30, 40]

// // concat
// const arr1 = arr.concat([50, 60, 70])
// // map
// const arr2 = arr.map(num => num * 10)
// // filter
// const arr3 = arr.filter(num => num > 25)
// // slice
// const arr4 = arr.slice()

// // 非纯函数
// // push pop shift unshift
// // forEach
// // some every
// // reduce

const arr = [10, 20, 30, 40, 50];

// slice 的参数是写2个 就是 截取 l 到 r 这个 区间 ，不包括 arr[r] 这个数
// 写一个就是截取 从这个数开始 ，到 结束 这个部分
// // slice 纯函数
const arr1 = arr.slice(); // [10,20,30,40,50]
const arr2 = arr.slice(1, 4); // [20,30,40]
const arr3 = arr.slice(2); // [30,40,50]
const arr4 = arr.slice(-3); // [30,40,50]

// // splice 非纯函数
// splice 的 2个参数是截取开始的位置和要截取的长度，然后原数组会丢失被截取的部分，函数返回截取的部分，后面的参数是在截取的开始位置添加元素
// const spliceRes = arr.splice(1, 2, 'a', 'b', 'c')
// // const spliceRes1 = arr.splice(1, 2)
// // const spliceRes2 = arr.splice(1, 0, 'a', 'b', 'c')
// console.log(spliceRes, arr)

const res = [10, 20, 30].map(parseInt);
console
  .log(res)

  [
    // 拆解
    (10, 20, 30)
  ].map((num, index) => {
    return parseInt(num, index);
  });
